public class LeilaoReverso implements ILeilao{

	String descricao;
	private double valor;
	IUsuario vendedor;
	private static double version = 1.0;

	public LeilaoReverso (){
	}

	public LeilaoReverso (String descricao){
		this.descricao = descricao;
	}

	public LeilaoReverso(String descricao, double valor){
		this.descricao = descricao;
		
		if (valor < 0) System.out.println ("Valor invalido!!!");		
		else this.valor = valor;
	}

	public double getValorAtual(){
		return this.valor;
	}
	
	public void setValorAtual (double valor){
		
		this.valor = valor;
	}

	public String getDescricao(){
		return this.descricao;
	}

	public void setDescricao (String descricao){
		this.descricao = descricao;
	}

	public IUsuario getVendedor(){	
		return this.vendedor;
	}

	public boolean finalizaLeilao(IUsuario usuario){
		System.out.println ("\nO "+this.descricao+" foi finalizado com lance final de R$"+this.valor+"\nVencedor: "+usuario.getEmail());
		
		if (usuario.getConta().getSaldo() >= this.valor){
			usuario.getConta().debitar(this.valor);

			EnvioEmail envioEmail = new EnvioEmail();
			envioEmail.enviarEmail(usuario.getEmail()); 

			return true;
		}
		else return false;
						
		
		/*IEnvioEmail envioEmail = new EnvioEmail();

		envioEmail.enviar(usuario.getEmail()); 

		

		return true;*/
	}

	public void lance (double valor, IUsuario usuario) throws Exception{

		if (this.valor >= 0 && valor > 0){
			this.valor -= valor;
			System.out.println("O lance atual eh de: R$"+this.valor+" feito por "+usuario.getEmail());
		}
		else{ throw new Exception ("\n---> Valor invalido!!! Por favor forneca um lance maior que o atual! <---\n");}

	}	
	
	public double getVersion(){
		return this.version;
	}

}
